﻿using System;
using System.Collections.Generic;
using Itau.IM.Carimbador.EntityObject;
using Itau.IM.Common.Mainframe.Book;

namespace Itau.IM.Carimbador.Contract
{
    /// <summary>
    /// Classe de requisição da operação ConsultarRegularComPrazo
    /// </summary>
    [BookClass(31000)]
    public class ConsultarRegularComPrazoRequest
    {
        #region Propriedades

        [BookNumberField(1,1)]
        public int TipoFluxo { get { return 0; } set { } }
        
        [BookNumberField(2,1)]
        public int FlagRecarimbo { get; set; }
        
        [BookNumberField(3,9)]
        public int CodigoProdutoFinanceiroDerivado { get; set; }

        [BookDateField(12,"dd.MM.yyyy")]
        public DateTime PrazoVencimento { get; set; }

        [BookDateField(22, "dd.MM.yyyy"),
        BookDateField(32, "HH.mm.ss")] 
        public DateTime DataHoraOperacao { get; set; }

        [BookCollectionField(40, typeof(BookObjectFieldAttribute), typeof(ParametroEO), 40, "000000000                               ", true, "00")]
        public List<ParametroEO> Parametros { get; set; }

        [BookStringField(1602, 20)]
        public string NomeUsuario { get; set; }

        [BookNumberField(29626, 1)]
        public EnumBaseConversao BaseConversao { get; set; }

        [BookObjectField(29678)]
        public ConsultarRechamada AreaRechamada { get; set; }
                

        #endregion Propriedades

        #region Métodos

        /// <summary>
        /// Construtor
        /// </summary>
        public ConsultarRegularComPrazoRequest()
        {
        }

        /// <summary>
        /// Construtor
        /// </summary>
        public ConsultarRegularComPrazoRequest(int codigoProdutoFinanceiroDerivado_, 
            DateTime dataHoraOperacao_, 
            string nomeUsuario_, 
            int flagRecarimbo_, 
            List<ParametroEO> parametros_, 
            DateTime prazoVencimento_,
            ConsultarRechamada areaRechamada_,
            EnumBaseConversao baseConversao_)
        {
            this.CodigoProdutoFinanceiroDerivado = codigoProdutoFinanceiroDerivado_;
            this.DataHoraOperacao = dataHoraOperacao_;
            this.NomeUsuario = nomeUsuario_;
            this.FlagRecarimbo = flagRecarimbo_;
            this.Parametros = parametros_;
            this.PrazoVencimento = prazoVencimento_;
            this.AreaRechamada = areaRechamada_;
            this.BaseConversao = baseConversao_;
        }

        #endregion Métodos
    }
}